
#pragma once

#include "TransientInterface.h"
#include "InternalSideIndicator.h"
#include "CFDDataPack.h"
#include "MultiVariableInterface.h"

#include <vector>
using std::vector;

class CFDProblem;

class FluxJumpIndicator :
public InternalSideIndicator,
public TransientInterface,
public MultiVariableInterface
{
public:
	FluxJumpIndicator(const InputParameters &parameters);
	virtual ~FluxJumpIndicator(){};

protected:
	CFDProblem &_cfd_problem;
	CFDDataPack _cfd_data, _cfd_data_neighbor;

	const Real &_current_elem_volume;
	const Real &_neighbor_elem_volume;
	const Real &_current_side_volume;

	virtual Real computeQpIntegral();
	void computeIndicator();
	void finalize();
};

template<>
InputParameters validParams<FluxJumpIndicator>();
